﻿using System;
using System.Data;

namespace AuctionSite.Entities
{
    public class Produto : IEntity<Produto>
    {
        #region Propriedades

        public int Id { get; set; }
        public int UsuarioId { get; set; }
        public int CategoriaId { get; set; }
        public int SubCategoriaId { get; set; }
        public string Nome { get; set; }
        public string Descricao { get; set; }
        public string Imagem1 { get; set; }
        public string Imagem2 { get; set; }
        public string Imagem3 { get; set; }
        public string TipoLeilao { get; set; }
        public decimal Valor { get; set; }
        public DateTime DataInicial { get; set; }
        public DateTime DataFinal { get; set; }

        #endregion

        public Produto Load(DataRow row)
        {
            if (row != null)
            {
                if (!string.IsNullOrEmpty(row["prod_id"].ToString()))
                {
                    this.Id = Convert.ToInt16(row["prod_id"]);
                    this.UsuarioId = Convert.ToInt16(row["usu_id"]);
                    this.CategoriaId = Convert.ToInt16(row["cat_id"]);
                    this.SubCategoriaId = Convert.ToInt16(row["sub_id"]);
                    this.Nome = row["prod_nome"].ToString();
                    this.Descricao = row["prod_descricao"].ToString();
                    this.Imagem1 = row["prod_foto1"].ToString();
                    this.Imagem2 = row["prod_foto2"].ToString();
                    this.Imagem3 = row["prod_foto3"].ToString();
                    this.TipoLeilao = row["prod_reverso"].ToString();
                    this.Valor = Convert.ToDecimal(row["prod_valor"]);
                    this.DataInicial = string.IsNullOrEmpty(row["prod_data_inicial"].ToString()) ? DateTime.MinValue : Convert.ToDateTime(row["prod_data_inicial"]);
                    this.DataFinal = string.IsNullOrEmpty(row["prod_data_final"].ToString()) ? DateTime.MinValue : Convert.ToDateTime(row["prod_data_final"]);
                }   
            }

            return this;
        }
    }
}